spb/note-spboucher-ai
Public
1import { notFound } from "next/navigation";2import { requireUserPage, getWorkspace } from "@/lib/auth/guard";3import { getPage, breadcrumb, backlinks, touchOpened } from "@/lib/pages/service";4import { PageView } from "@/components/page/PageView";5export default async function Page({ params }: { params: Promise<{ id: string }> }) {6 const { id } = await params; if (!/^[0-9a-f-]{36}$/.test(id)) notFound();7 const user = await requireUserPage(); const ws = await getWorkspace(user.id);8 let page; try { page = await getPage(ws.id, id, { includeDeleted: true }); } catch { notFound(); }9 const [crumbs, back] = await Promise.all([breadcrumb(ws.id, id), backlinks(ws.id, id)]);10 touchOpened(id).catch(() => {});11 return <PageView key={id} page={JSON.parse(JSON.stringify(page))} breadcrumb={crumbs} backlinks={JSON.parse(JSON.stringify(back))} />;12}13